package listthree.dao;

import listthree.domain.User;
import listthree.utils.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

/**
 * @Author Administrator
 * @Date 2020/6/18 16:36
 * 数据库访问层dao
 * 实现类，具体实现接口中定义的功能
 * 利用JdbcTemplate实现增删改查操作
 **/
public class UserDaoImpl implements UserDao {
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDatasource());
    String sql = "";

    @Override
    public List<User> selectAll() {
        /*作用：查询user表，将所有记录封装到List<User>并返回*/
        /*template查询基本用2种返回方法
           若查询结果是null，会报错，所以最好加上try..catch
        *  1）query（）：返回List<>
           2）queryForObject（）：User对象*/
        sql = "select * from user2";
        try {
            /*query方法参数：
              参数1：sql语句
              参数2：将查询结果（记录）封装到集合中
              参数3：给？赋值
             */
          return   template.query(sql, new BeanPropertyRowMapper<User>(User.class));
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return null;
        }

    }

    @Override
    public User selectByName(String name) {
        sql="select * from user2 where name=?";
        try{
            template.queryForList(sql,new BeanPropertyRowMapper<User>(User.class),name);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return null;
        }
        return null;
    }

    @Override
    public int insert(User user) {
        sql="insert into user2 values(null,?,?,?,?,?,?)";
        return template.update(sql,user.getName(),user.getGender(),user.getAge(),
                                user.getAddress(),user.getQq(),user.getEmail());

    }

    @Override
    public void delete(int id) {

    }

    @Override
    public User selectById(int id) {
        return null;
    }

    @Override
    public void update(User user) {

    }
}
